<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>InitPHP框架 PHP框架 - A PHP Framework - 验证码</title>
<link href="static/common.css" type="text/css" rel="stylesheet" />
<meta name="keywords" content="php框架，国产php框架, initphp框架，MVC，分层体系" />
<meta name="description" content="initphp框架是一款国产php框架。initphp框架主要基于MVC模式，具备代码清晰，操作简单，功能齐全，开发快速，高效安全等特点，是您选择php框架的首选。" />
</head>
<body>
<div class="header">
  <div class="header_nav">InitPHP (A PHP Framework) 用户手册</div>
  <div class="header_div">
    <div class="header_title">第6章 6.7.1 验证码</div>
    <div class="header_right"><a href="6_6_9.htm">上一页</a> <a href="6_7_2.htm">下一页</a> </div>
  </div>
</div>

<div class="title">
  <h3>接口描述：</h3>
</div>
<p>获取验证码，并生成验证码图片。属于InitPHP框架扩展类，需要通过$this->getLibrary()方法获取</p>

<div class="title">
  <h3>使用方法：</h3>
</div>
<pre id="php" class="php">
$code = $this->getLibrary('code'); 
</pre>
<div class="nav"></div>
<div class="title">
  <h3>实例：</h3>
</div>
<pre id="php" class="php">
class indexController extends Controller {
	
	public $initphp_list = array('test'); 
	
	public function run() {
		echo '<img src="http://127.0.0.1/initphp2/demo/index.php?c=index&a=test">';
		$this->view->display(); //模板显示
	}
	
	public function test() {
		$code = $this->getLibrary('code');
		$code->getcode('username'); //可以带上key，区分不同用法的验证码
	}
	
	/**
	 * @return testService
	 */
	private function getTestService() {
		return InitPHP::getService('test','test');
	}

}</pre>
<div class="title">
  <h3>具体类：</h3>
</div>
<pre id="php" class="php">
if (!defined('IS_INITPHP')) exit('Access Denied!');   
/*********************************************************************************
 * InitPHP 3.2.2 国产PHP开发框架  扩展类库-验证码
 *-------------------------------------------------------------------------------
 * 版权所有: CopyRight By initphp.com
 * 您可以自由使用该源码，但是在使用过程中，请保留作者信息。尊重他人劳动成果就是尊重自己
 *-------------------------------------------------------------------------------
 * $Author:zhuli
 * $Dtime:2012-11-27 
***********************************************************************************/
class codeInit {

	private $width  = 62;
	private $height = 20;
	
	/**
	 * 获取随机数值
	 * @return string  返回转换后的字符串
	 */
	private function get_random_val($key) {
		srand((double)microtime()*1000000);
		while(($authnum=rand()%100000)<10000);
		session_start();
		$_SESSION[$key . 'initphp_code'] = $authnum;
		return $authnum;
	}
	
	/**
	 * 获取验证码图片
	 * @return string  
	 */
	public function getcode($key = 'user_') {
		Header("Content-type: image/PNG");  
		$im = imagecreate($this->width, $this->height); //制定图片背景大小
		$black = imagecolorallocate($im, 0,0,0); //设定三种颜色
		$white = imagecolorallocate($im, 255,255,255); 
		$gray = imagecolorallocate($im, 200,200,200); 
		imagefill($im,0,0,$gray); //采用区域填充法，设定（0,0）
		$authnum = $this->get_random_val($key);
		imagestring($im, 5, 10, 3, $authnum, $black);
		// 用 col 颜色将字符串 s 画到 image 所代表的图像的 x，y 座标处（图像的左上角为 0, 0）。
		//如果 font 是 1，2，3，4 或 5，则使用内置字体
		for($i=0; $i<200; $i++) { 
     		$randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
     		imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); 
		}
		$a = imagepng($im); 
		imagedestroy($im);
		return $a;
	}
	
	public function checkCode($code, $key = 'user_') {
		session_start();
		if ($_SESSION[$key . 'initphp_code'] == $code) return true;
		return false;
	}
}</pre>

<div class="footer">版权所有：<a href="">http://initphp.com</a> InitPHP (A PHP Framework) By @Aliyun_zhuli</div>
<script src="static/jquery.js" type="text/javascript"></script>
<link href="static/prettify/prettify.css" rel="stylesheet" type="text/css">
<script src="static/prettify/prettify.js" type="text/javascript"></script>
<script type="text/javascript" src="static/comm.js"></script>
</body>
</html>
